package fachklassen;

import java.util.ArrayList;

import database.DatabaseManager;
import helper.BLError;
import helper.BLWarning;
import helper.Helper;
/**
 * Fachklasse mit Gettern und Settern
 *
 * @author	Michael Wolf
 * @author	Tanja Goletz
 * @version	1.0
 */
public class Benutzer {
	int benutzerID;
	String name;
	String passwort;
	String passwortHash;
	String passwortSalt;
	int bereichsleiterID;
	Bereichsleiter bereichsleiter;
	int klassenlehrerID;
	Klassenlehrer klassenlehrer;
	
	public int getBenutzerID() {
		return benutzerID;
	}
	public void setBenutzerID(int benutzerID) {
		this.benutzerID = benutzerID;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPasswort() {
		return passwort;
	}
	public boolean checkPasswort(String testPasswort) {
		return this.passwortHash.equals(Helper.toSHA1(new String(testPasswort+this.passwortSalt).getBytes()));
	}
	public void setPasswort(String passwort) {
		this.passwort = passwort;
		this.passwortSalt = Helper.toSHA1(Long.toString(System.nanoTime()).getBytes());
		this.passwortHash = Helper.toSHA1(new String(passwort+this.passwortSalt).getBytes());
	}
	public String getPasswortHash() {
		return passwortHash;
	}
	public void setPasswortHash(String passwortHash) {
		this.passwortHash = passwortHash;
	}
	public String getPasswortSalt() {
		return passwortSalt;
	}
	public void setPasswortSalt(String passwortSalt) {
		this.passwortSalt = passwortSalt;
	}
	public Bereichsleiter getBereichsleiter() throws BLError, BLWarning {
		if (bereichsleiter == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Bereichsleiter.class, "bereichsleiterID", bereichsleiterID);
			if (elements.size() == 0) bereichsleiter = null;
			else bereichsleiter = (Bereichsleiter)elements.get(0);
		}
		return bereichsleiter;
	}
	public void setBereichsleiter(Bereichsleiter bereichsleiter) {
		this.bereichsleiter = bereichsleiter;
		this.bereichsleiterID = bereichsleiter.getBereichsleiterID();
	}
	public Klassenlehrer getKlassenlehrer() throws BLError, BLWarning {
		if (klassenlehrer == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Klassenlehrer.class, "klassenlehrerID", klassenlehrerID);
			if (elements.size() == 0) klassenlehrer = null;
			else klassenlehrer = (Klassenlehrer)elements.get(0);
		}
		return klassenlehrer;
	}
	public void setKlassenlehrer(Klassenlehrer klassenlehrer) {
		this.klassenlehrer = klassenlehrer;
		this.klassenlehrerID = klassenlehrer.getKlassenlehrerID();
	}
	public int getBereichsleiterID() {
		return bereichsleiterID;
	}
	public void setBereichsleiterID(int bereichsleiterID) {
		this.bereichsleiterID = bereichsleiterID;
		this.bereichsleiter = null;
	}
	public int getKlassenlehrerID() {
		return klassenlehrerID;
	}
	public void setKlassenlehrerID(int klassenlehrerID) {
		this.klassenlehrerID = klassenlehrerID;
		this.klassenlehrer = null;
	}
	public String toString() {
		return this.getName();
	}
}
